#ifndef STATEMAINMENU_H
#define STATEMAINMENU_H

#include "Singleton.h"
#include "GameState.h"
#include "RenderableEntity.h"
#include "FadeEffect.h"
#include "MoveEffect.h"
#include "ScaleEffect.h"
#include "TimeLineEffect.h"
#include "TextEntity.h"
#include "Container.h"

class StateMainMenu : public GameState, public Singleton<StateMainMenu>
{
private:
    enum eMainMenuStates { MENU_ENTER, MENU_IDLE, MENU_EXIT };

    eMainMenuStates m_eState;
    RenderableEntity* m_eButtonSelected;
    
    Container* m_oMainMenu;
    
    Container* m_oGroundGroup1;
    Container* m_oGroundGroup2;
    Container* m_oGroundGroup3;

    Container* m_oSkyGroup1;
    Container* m_oSkyGroup2;
    Container* m_oSkyGroup3;
    
    Container* m_oTitle;
    Container* m_oButtons;

    
    RenderableEntity* m_oBg;
    RenderableEntity* m_oHungry;
    RenderableEntity* m_oBirths;
    RenderableEntity* m_oChupeteGrande;
    RenderableEntity* m_oPlay;
    RenderableEntity* m_oOptions;

    RenderableEntity* m_oGrassbg2;
    RenderableEntity* m_oPedestal;
    RenderableEntity* m_oChabolo;
    RenderableEntity* m_oGround;
    RenderableEntity* m_oFog;
    RenderableEntity* m_oMinicloud;
    RenderableEntity* m_oShopsign;
    RenderableEntity* m_oGrassforeground3;
    RenderableEntity* m_oGrassmed;
    RenderableEntity* m_oGrassmed2;
    RenderableEntity* m_oStork;
    RenderableEntity* m_oHuevete;
    RenderableEntity* m_oCloud3;
    RenderableEntity* m_oGrassforeground1;
    RenderableEntity* m_oGrassbg1;
    RenderableEntity* m_oMariquitis;
    RenderableEntity* m_oBolet2;
    RenderableEntity* m_oGrassforeground2;
    RenderableEntity* m_oBolet;
    RenderableEntity* m_oBglogo;
    RenderableEntity* m_oCloud1;
    RenderableEntity* m_oCloud2;

    TimeLineEffect* m_eHungryEnter;
    TimeLineEffect* m_eHungryExit;
    TimeLineEffect* m_oStartGame;
        
public:
	StateMainMenu();
	~StateMainMenu();
	
	void loadContent();
	void unloadContent();
	void enter();
	void exit();
	void update(float dt);
	void render();
};

#endif